package com.ruoyi.income.domain;

import java.math.BigDecimal;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 【收益】对象 income
 * 
 * @author ruoyi
 * @date 2025-07-02
 */
@ApiModel(description = "收益信息实体")
public class Income extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "收益ID", example = "收益ID")
    private Long id;

    @ApiModelProperty(value = "来源", example = "来源")
    @Excel(name = "来源")
    private String source;

    @ApiModelProperty(value = "订单号", example = "订单号")
    @Excel(name = "订单号")
    private String orderId;

    @ApiModelProperty(value = "来源用户收益名字", example = "来源用户收益名字")
    @Excel(name = "来源用户收益名字")
    private String username;

    @ApiModelProperty(value = "收入明细", example = "收入明细")
    @Excel(name = "收入明细")
    private String incomeDetails;

    @ApiModelProperty(value = "提现明细", example = "提现明细")
    @Excel(name = "提现明细")
    private String withdrawalDetails;

    @ApiModelProperty(value = "提现状态(0-已打款, 1-审核中, 2-打款中, 3-已驳回, 4-打款成功, 5-打款失败)", example = "提现状态(0-已打款, 1-审核中, 2-打款中, 3-已驳回, 4-打款成功, 5-打款失败)")
    @Excel(name = "提现状态, 0-已打款, 1-审核中, 2-打款中, 3-已驳回, 4-打款成功, 5-打款失败")
    private Long withdrawalStatus;

    @ApiModelProperty(value = "总金额", example = "总金额")
    @Excel(name = "总金额")
    private BigDecimal totalAmount;

    @ApiModelProperty(value = "冻结金额", example = "冻结金额")
    @Excel(name = "冻结金额")
    private BigDecimal freezeAmount;

    @ApiModelProperty(value = "可提现金额", example = "可提现金额")
    @Excel(name = "可提现金额")
    private BigDecimal withdrawableAmount;

    @ApiModelProperty(value = "用户ID", example = "用户ID")
    @Excel(name = "用户id")
    private String userId;


    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }

    public void setSource(String source) 
    {
        this.source = source;
    }

    public String getSource() 
    {
        return source;
    }

    public void setOrderId(String orderId)
    {
        this.orderId = orderId;
    }

    public String getOrderId()
    {
        return orderId;
    }

    public void setUsername(String username) 
    {
        this.username = username;
    }

    public String getUsername() 
    {
        return username;
    }

    public void setIncomeDetails(String incomeDetails) 
    {
        this.incomeDetails = incomeDetails;
    }

    public String getIncomeDetails() 
    {
        return incomeDetails;
    }

    public void setWithdrawalDetails(String withdrawalDetails) 
    {
        this.withdrawalDetails = withdrawalDetails;
    }

    public String getWithdrawalDetails() 
    {
        return withdrawalDetails;
    }

    public void setWithdrawalStatus(Long withdrawalStatus) 
    {
        this.withdrawalStatus = withdrawalStatus;
    }

    public Long getWithdrawalStatus() 
    {
        return withdrawalStatus;
    }

    public void setTotalAmount(BigDecimal totalAmount) 
    {
        this.totalAmount = totalAmount;
    }

    public BigDecimal getTotalAmount() 
    {
        return totalAmount;
    }

    public void setFreezeAmount(BigDecimal freezeAmount) 
    {
        this.freezeAmount = freezeAmount;
    }

    public BigDecimal getFreezeAmount() 
    {
        return freezeAmount;
    }

    public void setWithdrawableAmount(BigDecimal withdrawableAmount) 
    {
        this.withdrawableAmount = withdrawableAmount;
    }

    public BigDecimal getWithdrawableAmount() 
    {
        return withdrawableAmount;
    }

    public void setUserId(String userId)
    {
        this.userId = userId;
    }

    public String getUserId()
    {
        return userId;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("source", getSource())
            .append("orderId", getOrderId())
            .append("username", getUsername())
            .append("incomeDetails", getIncomeDetails())
            .append("withdrawalDetails", getWithdrawalDetails())
            .append("withdrawalStatus", getWithdrawalStatus())
            .append("totalAmount", getTotalAmount())
            .append("freezeAmount", getFreezeAmount())
            .append("withdrawableAmount", getWithdrawableAmount())
            .append("userId", getUserId())
            .append("createTime", getCreateTime())
            .toString();
    }
}
